package cn.itsource.date;

import java.util.Calendar;
import java.util.Date;

/**
 *	Calendar: 日历相关抽象类，为了便于操作日期（加减日期，设置日期）和时间段
 *		1. Calendar rightNow = Calendar.getInstance();获取一个对象
 *		常用方法看下面的代码案例
 *
 *		SimpleDateFormat: 当日期的显示格式需要根据需求转换的时候，用SimpleDateFormat
 *
 *		Date:适用于具体某一刻时间，一般用在例如，订单时间、用户注册时间等
 */
public class CalendarTest {

	public static void main(String[] args) {
		//1. 获取日历对象：1. Calendar rightNow = Calendar.getInstance();获取一个对象
		Calendar rightNow = Calendar.getInstance();//获取一个对象,本质是创建子类对象，然后放到了父类Calendar的变量保存
		System.out.println(rightNow);
		
		
		/*
		 * 常用方法：
		 * 		1.abstract void add(int field, int amount)  添加时间操作
		 * 			field:是Calendar中的常量
		 * 			月份从：0-11	
		 * 			如果月份超过11，则进年，如果日期超过所在月份的最大或者最小一天，则进月或者退月
		 * 		2.int get(int field)  	获取某一个字段（当前Calendar常量）的时间
		 * 		3.void set(int field, int value)根据当前Calendar常量设置时间   
		 * 		4.Date getTime()   将Calendar对象转换为Date类型
		 * 		5.void setTime(Date date)  将Date转换为Calendar
		 * 		6.boolean after(Object when)  
		 * 		7.boolean before(Object when)  
		 */
		//1.abstract void add(int field, int amount)  添加时间操作
		rightNow.add(Calendar.MONTH,3);//如果第二个参数是正数，就是+，负数就是-
		
		//2.int get(int field)  	获取某一个字段（当前Calendar常量）的时间
		int year = rightNow.get(Calendar.YEAR);
		int month = rightNow.get(Calendar.MONTH);//月份是从:0-11
		int day = rightNow.get(Calendar.DAY_OF_MONTH);
		System.out.println(year + "年 " + month + "月" + day + "日" );
		
		//3.void set(int field, int value)根据当前Calendar常量设置时间   
		rightNow.set(Calendar.YEAR, 2050);
		year = rightNow.get(Calendar.YEAR);
		month = rightNow.get(Calendar.MONTH);//月份是从:0-11
		day = rightNow.get(Calendar.DAY_OF_MONTH);
		System.out.println(year + "年 " + month + "月" + day + "日" );
		
		//4.Date getTime()   将Calendar对象转换为Date类型
		Date time = rightNow.getTime();
		System.out.println(time);
		
		//5.void setTime(Date date)  将Date转换为Calendar
		Date date = new Date();
		rightNow.setTime(date);
		year = rightNow.get(Calendar.YEAR);
		month = rightNow.get(Calendar.MONTH);//月份是从:0-11
		day = rightNow.get(Calendar.DAY_OF_MONTH);
		System.out.println(year + "年 " + month + "月" + day + "日" );
		
		//6.boolean after(Object when)  
		//7.boolean before(Object when)  
		rightNow.set(Calendar.YEAR, 2022);
		
		Calendar now = Calendar.getInstance();
		boolean after = rightNow.after(now);
		System.out.println(after);
		
	}

}
